package com.focus.wecenter.service;

import com.focus.wecenter.pojo.User;
import com.focus.wecenter.util.Message;
import com.focus.wecenter.util.PageBean;
import com.focus.wecenter.web.vo.SearchResult;
import com.focus.wecenter.web.vo.UserForm;

import java.util.List;

/**
 * 用户的业务接口
 *
 * @author Lv Jing
 * @date 2018年01月05日 13:04
 */
public interface UserService {

    /**
     * 检查用户名是否已经存在
     * @param username 要检查的用户名
     * @return 是否存在
     */
    boolean checkUsername(String username);

    /**
     * 检查邮箱是否已经存在
     * @param email 要检查的邮箱
     * @return 是否存在
     */
    boolean checkEmail(String email);

    /**
     * 注册用户
     * @param user 表单提交的实体数据
     */
    void register(UserForm user);

    /**
     * 登录
     * @param username 用户名或者邮箱
     * @param password 密码
     * @return 用户对象
     */
    User login(String username, String password);

    /**
     * 根据ID查找用户
     * @param userID 用户ID
     * @return 用户对象
     */
    User findByID(int userID);

    /**
     * 分页查找用户列表
     * @param currentPage 当前页
     * @param pageSize 页面大小
     * @return 分页结果
     */
    PageBean<User> findByPage(int currentPage, int pageSize);

    /**
     * 根据用户查找用户
     * @param username 用户名
     * @return 查找到的用户
     */
    User findByUsername(String username);

    /**
     * 关注或者取关用户
     * @param followID 被关注用户
     * @param fansID 关注用户
     * @return 消息
     */
    Message focusUser(int followID, int fansID);

    /**
     * 搜索用户
     * @param query 查询关键字
     * @param limit 条数
     * @return  搜索结果
     */
    List<SearchResult> searchUser(String query, int limit);
}
